home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / web / noweb / src / icon / icondefs.icn < prev    next >
Text File  |  1995-02-24  |  2KB  |  67 lines

  1. #line 2 "icondefs.nw"
  2. global showlocal
  3. procedure main(args)
  4.   showlocal := !args == "-local"
  5.   go()
  6. end
  7. #line 8 "icondefs.nw"
  8. procedure postpass(name, arg)
  9.   static kind, definers
  10.   initial { kind := "bogus"
  11.             definers := ["global"]
  12.             if \showlocal then every put(definers, "local" | "static")
  13.           }
  14.   case name of {
  15.     "begin" : arg ? kind := tab(upto(' ')|0)
  16.     "text" : if kind == "code" then arg ?
  17.         if =("procedure "|"record ") then {
  18.             tab(many(' '))
  19.             writedefn(tab(upto(' ()')))
  20.         } else if (tab(many(' ')) | "", =!definers, tab(many(' '))) then {
  21.             while (not any('#')) & writedefn(tab(upto(', #'))) do tab(many(', '))
  22.             if not any('#') then writedefn(tab(0))
  23.         }
  24.   }
  25.   return
  26. end
  27.  
  28. procedure prepass(name, arg)
  29.   if name == "end" then writedefn(&null) # force newline
  30. end
  31. #line 1 "defns.nw"
  32. procedure go()
  33.   local line
  34.   while line := read() do {
  35.     apply(prepass, line)
  36.     write(line)
  37.     apply(postpass, line)
  38.   }
  39. end
  40.  
  41. procedure apply(pass, line)
  42.     line ? (="@" & pass(tab(upto(' ')|0),  if =" " then tab(0) else &null))
  43. end
  44. #line 17 "defns.nw"
  45. procedure writedefn(defn, locl)
  46.   static indextext
  47.   initial indextext := ""
  48.   if /defn then
  49.     *indextext > 0 & 
  50. #line 30 "defns.nw"
  51. { # write("@index nl")          # don't!
  52.   indextext := ""
  53. }
  54. #line 22 "defns.nw"
  55.   else {
  56.     if *indextext + *defn > 65 then 
  57. #line 30 "defns.nw"
  58. { # write("@index nl")          # don't!
  59.   indextext := ""
  60. }
  61. #line 24 "defns.nw"
  62.     write(if \locl then "@index localdefn" else "@index defn ", defn)
  63.     indextext ||:= " " || defn
  64.   }
  65.   return
  66. end
  67.